Implantable device and programmer system which permits multiple programmers

ABSTRACT

A multiprogrammer system for monitoring and optimizing implantable device performance. In one embodiment, the system includes at least two programming devices and an implantable device. Each of the programming devices may be used to perform inquiry and programming operations on the implantable device. In an inquiry operation, the programming device retrieves some or all of the configuration parameters from the implantable device. In a programming operation, the programming device provides one or more modified parameters to the implantable device. As part of the programming operation, the programming device is configured to verify that it is aware of the implantable device&#39;s current parameters before sending the modified parameters. In other words, the current programming device verifies that the implantable device&#39;s parameters have not been altered by another programming device since the current programming device&#39;s last interaction with the implantable device. If the parameters have been altered, the current programming device aborts the programming operation and notifies the operator. In alternate embodiments, the verification may be performed by the implantable device, i.e. the implantable device may verify that the programming device is aware of the current device parameters before the implantable device accepts the modified parameters.

BACKGROUND OF THE INVENTION

[0001] 1.Field of the Invention

[0002] This invention relates generally to programming of implantabledevices, and more particularly to a programming system which addressesthe dangers raised by the presence of multiple programming devices.

[0003] 2.Description of the Related Art

[0004] Implantable devices have become a standard method of treatingvarious medical conditions, many of which relate to the heart. Examplesof implantable devices include pacemakers, defibrillators, nervestimulators, drug delivery devices, and implanted personalidentification chips. Many types of implantable devices are availablewith high capacity memories for storing data and various programmableconfiguration parameters. In the case of medical devices, the data to bestored may include physiological data such as the electrogram(electrical waveform of the heart detected at the electrodes),instantaneous heart rate, blood pressure, volume pumped, bodytemperature, etc. Configuration parameters that are stored may includemodes of operation, amplifier sensitivity, filter bandwidth, adaptationalgorithms, output voltages, currents and pulse widths, blankingperiods, various pacing rates, circadian response patterns, leadcharacteristics, delay intervals, detection thresholds, safety margins,logging criteria, and error messages. As implantable devices increase insophistication, the number of configuration parameters is also expectedto increase.

[0005] Referring now to FIG. 1, a human torso 102 is shown having animplantable device 106 coupled to a heart 104. When a wand 108 from anexternal programming device 10 is placed in proximity to implantabledevice 106, the programming device 110 can establish two-waycommunication with implantable device 106 to retrieve data and toprovide new configuration parameters. Often the device 106 collects dataover a period of hours or days. In the case of a pacemaker, the data mayrepresent measured physiological signals such as cardiac voltages (EKGsignals), blood temperatures, oxygen levels, sugar levels, and otherphysical parameters.

[0006] Illustratively, the programming device 110 comprises animplantable device programmer and data analyzer that is used by aphysician. The programmer/analyzer operates to download informationstored in implantable device 106 by transmitting signals which place thepacer in a mode for downloading, and thereafter detecting signals sentby the device. Then, under control of the physician or other medicalprofessional, the programmer/analyzer operates to analyze and displaythe information in a format which allows the physician to diagnose anyproblems. After performing an analysis, the physician may instruct theprogrammer/analyzer to adjust operating parameters for a different modeof operation, sensitivity setting, or other parameter value, to tailorthe behavior of the device to the patient and thereby optimize thepatient's quality of life. If this is the case, the programmer/analyzer110 provides new operating parameters to the implantable device 106.

[0007] Implant manufacturers have long been aware of a danger known asthe “multiple programmer” problem which can result in an implantabledevice having incorrect and perhaps even dangerous or harmfulconfiguration parameters. The following scenario is presented toillustrate this problem.

[0008] A patient with an implantable device enters an examination room,and as part of a routine initial examination has a medical technicianuse a first programming device “A” to download data and configurationparameters from the implantable device. Depending on the amount of dataand the baud rate of the device, the download time may range from 20seconds to 20 minutes. In the absence of any gross abnormalities in thedownloaded data, the patient is sent to another room for an exercisesession to determine “rate modulated” settings, i.e. configurationparameters for adjusting the pacemaker pace rate in response todetecting patient exertion. In this room, a physician uses a secondprogramming device “B” to download and adjust the configurationparameters in response to the results of the exercise session.Programming device “B” is used to reprogram the implantable device withthe adjusted parameters. The patient then returns to the examinationroom, where a physician uses programming device “A” to adjust some ofthe configuration parameters in response to analysis of the downloadeddata. Programming device “A” is then used to reprogram the implantabledevice with the adjusted parameters. It is important to note thatprogramming device “A” is, at this point, operating with an obsoleteversion of the implant's configuration settings. This situation occurswhenever changes are made to the implantable device's configurationparameters by a second programming device “B” between the download andreprogramming operations of the first programming device “A”.

[0009] The configuration parameters of an implantable device such as apacemaker can individually be set to typical values within a normaloperating range, but the programming device must still check forincompatible parameter settings to avoid dangerous combinations ofparameter values. For example, programming an inappropriately longrefractory period in conjunction with a short pacing cycle may lead tounpredictable pacing behavior. If a programming device with an obsoleteversion of the implant device's configuration settings reprograms only afew parameters, any safeguards that the programming device implements toavoid incompatible parameter settings could be unintentionallycircumvented.

[0010] One programmer safeguard that has been employed is to haveprogramming device “A” reprogram the implantable device with a completeset of configuration parameters rather than just the parameters whichhave been adjusted. Although this successfully prevents incompatibleconfiguration settings, the previous adjustments are completely undonewithout any indication to the physician. Further, the reprogramming timeis unnecessarily increased beyond what may be strictly necessary.

[0011] The solution commonly employed by implant manufacturers has beensimply to issue warnings regarding the danger of using multipleprogramming devices. A more effective and inexpensive solution to themultiple programming device problem is desirable.

SUMMARY OF THE INVENTION

[0012] Accordingly, there is provided herein a multiprogrammer systemfor monitoring and optimizing implantable device performance. In oneembodiment, the system includes at least two programming devices and animplantable device. Each of the programming devices may be used toperform inquiry and programming operations on the implantable device. Inan inquiry operation, the programming device retrieves some or all ofthe configuration parameters from the implantable device. In aprogramming operation, the programming device provides one or moremodified parameters to the implantable device. As part of theprogramming operation, the programming device is configured to verifythat it is aware of the implantable device's current parameters beforesending the modified parameters. In other words, the current programmingdevice verifies that the implantable device's parameters have not beenaltered by another programming device since the current programmingdevice's last interaction with the implantable device. If the parametershave been altered, the current programming device aborts the programmingoperation and notifies the operator. In alternate embodiments, theverification may be performed by the implantable device, i.e. theimplantable device may verify that the programming device is aware ofthe current device parameters before the implantable device accepts themodified parameters.

[0013] As part of the multiprogrammer system provided herein, there isdisclosed a programming device embodiment, an implantable deviceembodiment, and various methods for verifying that the programmingdevice has been provided with a current version of the implantabledevice's configuration parameters. The programming device preferablycomprises a user interface, a memory, a communications circuit, and amicroprocessor. The communications circuit generally includes acommunication coil, receive sensor, modulator, and demodulator, and isconfigurable to send and receive configuration parameters to and fromthe implantable device. The microprocessor couples to the userinterface, the memory, and the communications circuit, and it operatesunder control of the user interface to retrieve configuration parametersfrom the implantable device and to store the parameters in memory. Theconfiguration parameters may be modified, and the modified parameterscan be sent to the implantable device. In certain disclosed embodiments,the microprocessor uses one of the following methods to verify that thestored configuration parameters are “current” before sending themodified parameters, that is, the microprocessor verifies that theimplantable device's parameters have not been altered since thisprogrammable device last retrieved the implantable device's parameters.

[0014] The implantable device comprises a microprocessor coupled to amemory and a telemetry module. The memory stores configurationparameters, and the telemetry module transmits and receives externalcommunications. The microprocessor performs some algorithm in a mannergoverned by the configuration parameters stored in the memory. Incertain disclosed embodiments, the microprocessor uses one of thefollowing methods to verify that an external programming device hasreceived a current version of the configuration parameters beforeaccepting modified configuration parameters from the programming device.

[0015] The disclosed methods for verifying that a programming device isaware of the implantable device's current configuration parametersinclude: (1) providing a programming device serial number to theimplantable device as part of every inquiry operation; (2) allowing aprogramming operation only within a predetermined time interval after aninquiry operation; (3) storing the date and time of the most recentinquiry operation; (4) storing the date and time of the most recentprogramming operation; and (5) retrieving the implantable device'scurrent parameters as part of every programming operation. For method(1), the implantable device or the programming device can be configuredto compare the programming device's serial number with the serial numberof the last programming device to retrieve the implantable device'sconfiguration parameters. A match indicates that the programming deviceis aware of the implantable device's current parameter values.

[0016] The method (2), the implantable device or the programming devicecan determine if the downloaded version of the configuration parametershas “expired”, that is, whether a predetermined amount of time haspassed since the configuration parameters were last retrieved. Formethod (3), the implantable device or programming device can beconfigured to compare the date and time of the most recent inquirystored in the programming device to that stored in the implantabledevice. A match indicates that the programming device is aware of theimplantable device's current parameter values.

[0017] Similarly, for method (4), the implantable device or programmingdevice can be configured to compare the date and time of the most recentprogramming operation stored in the programming device to that stored inthe implantable device. Finally, for method (5), the programming devicecan be configured to retrieve the implantable device's configurationparameters immediately prior to a programming operation to verify thatthe programming device has a current version. These methods will bedescribed in more detail further below.

BRIEF DESCRIPTION OF THE DRAWINGS

[0018] Other objects and advantages of the invention will becomeapparent upon reading the following detailed description and uponreference to the accompanying drawings in which:

[0019]FIG. 1 shows an implantable medical device and a programmingdevice;

[0020]FIG. 2 is a block diagram of an implantable pacemaker;

[0021]FIG. 3 is a block diagram of an exemplary embodiment of aprogramming device;

[0022]FIG. 4 is a flowchart depicting a method for performing inquiryand programming operations;

[0023]FIG. 5 is a flowchart illustrating the multiprogrammer problem;

[0024]FIG. 6 is a flowchart depicting a first method for performinginquiry and programming operations in a multiprogrammer environment;

[0025]FIG. 7 is a flowchart depicting a second method for performinginquiry and programming operations in a multiprogrammer environment;

[0026]FIG. 8 is a flowchart depicting a third method for performinginquiry and programming operations in a multiprogrammer environment;

[0027]FIG. 9 is a flowchart depicting a fourth method for performinginquiry and programming operations in a multiprogrammer environment;

[0028]FIG. 10 is a flowchart depicting a fifth method for performinginquiry and programming operations in a multiprogrammer environment;

[0029]FIG. 11 is a flowchart depicting a sixth method for performinginquiry and programming operations in a multiprogrammer environment;

[0030]FIG. 12 is a flowchart depicting a seventh method for performinginquiry and programming operations in a multiprogrammer environment;

[0031]FIG. 13 is a flowchart depicting an eighth method for performinginquiry and programming operations in a multiprogrammer environment; and

[0032]FIG. 14 is a flowchart depicting a ninth method for performinginquiry and programming operations in a multiprogrammer environment.

[0033] While the invention is susceptible to various modifications andalternative forms, specific embodiments thereof are shown by way ofexamples in the drawings and will herein be described in detail. Itshould be understood, however, that the drawings and detaileddescription thereto are not intended to limit the invention to theparticular form disclosed, but on the contrary, the intention is tocover all modifications, equivalents and alternatives falling within thespirit and scope of the present invention as defined by the appendedclaims.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0034] The following description illustrates the principles of thepresent invention with respect to an implantable pacemaker (“pacer”) anda programming device (“programmer”). The invention, however, is directedto a system for permitting multiple programming devices to interact withan implantable device. Thus, the invention applies to implantablecardioverter/defibrillators (ICD's), nerve stimulators, drug deliverydevices, or any other implantable device which may have programmableconfiguration parameters set by a programming device.

[0035] Referring now to FIG. 2, an exemplary implantable device 106(such as a pacemaker) preferably includes a power supply 202 coupled toa microprocessor 204. The power supply 202 provides power to all thedevices shown in FIG. 2 through connections which are not specificallyshown. In the exemplary embodiment, the microprocessor 204 couples to amemory 206, a first interval timer 208, and a second interval timer 210via an I/O (input/output) bus 211. The microprocessor 204 also couplesto control an atrium sensor/stimulator 212 and a ventriclesensor/stimulator 214, each of which may be coupled to the heart byflexible leads. Finally, microprocessor 204 couples to a telemetrymodule 218 to communicate with programming device 110.

[0036] The microprocessor 204 preferably is programmable and operatesaccording to a program stored preferably in a nonvolatile memory such asa read-only memory (not specifically shown). The program isparameterized - i.e. one or more of the operations the microprocessorperforms is alterable by setting a configuration parameter. For example,the microprocessor may be programmed to- periodically trigger the atriumsensor/stimulator 212 to deliver a pulse to the heart 104. In thisinstance, one of the configuration parameters for this operation is themaximum trigger delay, that is, a value specifying the maximum timedelay before the atrium stimulator is triggered. The maximum triggerdelay, along with other configuration parameters, is provided tomicroprocessor 204 via telemetry module 218 and stored in memory 206.During pacemaker operation, the microprocessor 204 retrieves the maximumtrigger delay from the memory 206 and uses it to set interval timer 210after each triggering of the atrium sensor/stimulator. If the intervaltimer 208 expires, the microprocessor then triggers atriumsensor/stimulator 212.

[0037] Referring still to FIG. 2, the first interval timer 208determines the delay between trigger signals applied to atriumstimulator 212 and ventricle stimulator 214. The second interval timer210 measures the time since the last heartbeat sensed by the atriumsensor/stimulator 212 or ventricle sensor/stimulator 214. When eithertimer elapses, the elapsed timer asserts an interrupt signal tomicroprocessor 204 to notify the microprocessor 204 that the set amountof time has passed. Microprocessor 204 determines the source of theinterrupt according to conventional techniques and takes the appropriateaction. For example, if the maximum trigger delay (interval timer 210)has elapsed since the last heartbeat, the microprocessor 204 triggersatrium sensor/stimulator 212.

[0038] The microprocessor 204 also preferably monitors one or morephysiological signals. In the pacemaker example, the microprocessor 204detects cardiac voltage signals via atrium sensor 212 and/or ventriclesensor 214. The heart leads which provide electrical pulses to the heartmay also be used to sense electrical signals created by the heart as itbeats, and these signals are used by the microprocessor 204 to adjustthe timing of the electrical pulses. When other sensors are coupled tothe implantable device 106, the microprocessor can also monitor bloodpressure, body temperature, oxygen levels, and other physiologicalparameters. The microprocessor 204 can also track its own performance,perhaps by logging the manner in which adaptation is performed on theparameters. The physiological signals and performance information can belogged in memory 206 for later retrieval by programming device 110. Thememory 206 preferably is large enough to store data regarding severalphysiological signals that being are monitored over a period of severaldays. Memory 206 preferably is implemented as dynamic random accessmemory (DRAM) or other suitable memory type.

[0039] The atrium sensor/stimulator 212 is an interface circuit betweenmicroprocessor 204 and a heart lead coupled to an atrium of the heart.An interface circuit is necessary to allow the digital, low voltagemicroprocessor to control the high-energy pulses delivered to the heart,and additionally, to allow the microprocessor to monitor the analogelectrical signals that are generated by the heart as it beats.Similarly, the ventricle sensor/stimulator 214 is an interface circuitbetween microprocessor 204 and a heart lead that couples to a ventricleof the heart. When atrium sensor/stimulator 212 receives a triggersignal from microprocessor 204, it generates a shaped electrical energypulse to the atrium. Likewise, when ventricle sensor/stimulator 212receives a trigger signal from microprocessor 204, it provides a shapedelectrical energy pulse to the ventricle. If the microprocessor is usingatrium sensor/stimulator 212 or ventricle sensor/stimulator 214 tomeasure cardiac voltage signals from the electrodes to monitor theperformance of the heart, the microprocessor 204 stores the cardiacwaveforms (or “electrograms”) in memory for subsequent retrieval by amedical technician.

[0040] Telemetry module 218 may be designed to be activated byprogramming device 110 when wand 108 enters into proximity with pacer106. For example, the telemetry module 218 may continually be checkingfor an activation signal that the wand 108 transmits. Activation of thetelemetry module 218 causes the telemetry module 218 to establishbi-directional communication with wand 108 and to notify microprocessor204 of an incoming communication. As the wand 108 transmits a messagesignal, the telemetry module demodulates the message signal and deliversthe incoming message to the microprocessor 204. The microprocessor 204decodes the incoming message and stores any received data or parameters.In addition, the microprocessor 204 responds to any received commandsfrom the programming device 110. For example, one command might be an“inquiry”, that is, a request for the microprocessor 204 to transferconfiguration parameters from memory 206 to programming device 110. Inthis case, microprocessor 204 provides the configuration parameters frommemory 206 to telemetry module 218 for transferal to programming device110.

[0041] Referring now to FIG. 3, programming device 110 includes amicroprocessor 302, a modulator 304 coupled to a transmit coil 306, ademodulator 310 coupled to a receive sensor 308, a memory 312, and auser interface 314. The microprocessor 302 responds to user input viathe user interface 314 (which may comprise a graphic display and userinput device such as a keypad) and initiates communications with pacer106 (FIG. 2). For example, if a user requests a download of data fromthe pacer to programming device 110, microprocessor 302 formulates acommand signal, and sends the signal to modulator 304. Modulator 304converts the command signal into a modulated signal for driving transmitcoil 306. The signal driving the transmit coil 306 produces a changingmagnetic field which induces a current in a receive coil in the pacer.The pacer processes the induced current to reconstruct the informationsent from the programming device, and formulates and sends a reply. Thepacer can transmit signals to programming device 110 by various meansincluding modulating a light signal or driving a transmit coil. Receivesensor 308 detects and amplifies the signal transmitted by the pacer toproduce a detection signal. Demodulator 310 demodulates the detectionsignal and converts it into the data transmitted by the pacer 106.Demodulator 310 then provides the data to microprocessor 302 foreventual analysis and display via user interface 314. Memory 312 may beused to store data and configuration parameters downloaded from thepacer.

[0042] Referring now to FIG. 4, a pair of flowcharts are provided toillustrate the operation of the processor 302 in the programming device110 and the operation of the processor in 204 the implantable device 106during the inquiry and programming operations. The programming device'sprocessor 302 starts in step 401 and the implantable device's processor204 starts in step 411. In step 402 the processor 302 initiates aninquiry operation by sending a command to the implantable devicerequesting the implantable device to transmit its model and serialnumber. In step 403 the processor 302 receives the model and serialnumber information and stores it for future identification of theimplantable device. In step 404 the processor 302 sends a request to theimplantable device for the implantable device to transmit one or more ofits configuration parameters. The parameter request may be a partialrequest, in which only certain specified parameters are requested, or afull request, in which a download of all the configuration parameters isrequested. In a typical initial inquiry operation, the parameter requestis a full request. In step 405 the processor 302 receives thetransmitted configuration parameters and stores them in memory foranalysis and possible alteration by the user of the programming device110. This may complete the inquiry operation, or as a further part ofthe inquiry operation the processor 302 may request and receive storedphysiological data from the implantable device.

[0043] After a user examines the configuration parameters and analyzesany downloaded data, the user may wish to modify one or more of theconfiguration parameters and to perform a programming operation toreprogram the implantable device with the modified parameters. In step406 the processor 302 initiates a programming operation by sending acommand to the implantable device requesting the implantable device totransmit its model and serial number. In step 407 the processor 302receives the model and serial number information and verifies that itmatches with the stored identification information from step 403. Theprocessor then in step 408 transmits the modified parameters. Theprogramming device transmits a partial or complete parameter set to theimplantable device. A partial parameter set is preferred for a fasterprogramming operation, but a complete parameter set is preferred foradded safety against incompatible configuration parameter settings. Instep 409 the processor 302 receives confirmation from the implantabledevice that the transmitted parameters were successfully received. Ifconfirmation is not received, in step 409, then the user is notified ofa failure to reprogram the implantable device. The processor 302completes the programming operation by entering into end state 410.

[0044] In step 412 processor 204 of the implantable device receives themodel and serial number request command sent by the programming devicein step 402. In step 413 the processor 204 responds by transmitting themodel and serial number of the implantable device. In step 414 theprocessor 204 receives the configuration parameter request command fromthe programming device, and in step 415 the processor responds bytransmitting the current configuration parameter values. Subsequentlyduring a programming operation, the processor 204 receives another modeland serial number request command in step 416, and responds in step 417by transmitting the model and serial number of the implantable device.Then in step 418 the processor 204 receives modified parameter valuesfrom the programming device. After verifying that the parameters havebeen correctly received, the processor updates the configurationparameters with the new values and, in step 419, transmits aconfirmation message to the programming device.

[0045]FIG. 5 illustrates how the use of multiple programming devices canintroduce safety concerns when a second programming device interactswith an implantable device between the inquiry and programmingoperations of the first programming device. An implantable device beginsin step 502. In step 504, an inquiry operation is performed by a firstprogramming device “A”. Subsequently, a second programming device “B”performs an inquiry operation on the implantable device in step 506, anda programming operation on the implantable device in step 508. The firstprogramming device “A” is then used to program the implantable device instep 510, and at the end of this sequence in step 512, the implantabledevice may be left with an undesired set of configuration parameters. Toavoid this, programming device “A” or the implantable device may beprovided with a means for detecting if another programming deviceinteracted with the implantable device between the inquiry and programoperations of programming device “A”.

[0046] A first embodiment of a multiple programming device-implantabledevice system is shown in FIG. 6. The programming device's processor 302proceeds through the inquiry operation steps 401-405 as outlinedpreviously. After the processor 302 successfully receives all therequested parameters in step 405, in step 601 the processor 302 sends aprogramming device identification number to the implantable device forthe implantable device to store. The programming device identificationnumber preferably includes the model number and serial number of theprogramming device. In this system embodiment, the implantable devicealways has a record of the last programming device to successfullyperform an inquiry or programming operation on it.

[0047] Subsequently, when the programming device is ready to transmitaltered parameters to the implantable device, the processor 302 proceedsthrough steps 406, 407, and after verifying that the implantidentification information matches, the processor transmits theprogramming device identification number in step 602 before transmittingthe modified configuration parameters in step 408 and proceeding throughsteps 409 and 410.

[0048] The implantable device's processor 204 similarly proceeds throughinquiry operation steps 411-415 as outlined previously. After theprocessor 204 transmits the requested parameters in step 415, itreceives and stores the programming device identification information instep 603. Then when the programming device initiates a programmingoperation, the processor 204 performs steps 416, 417 before receivingthe programming device's identification information in step 604. In step606 the processor 204 compares the received identification informationto the previously stored identification information from step 603. Ifthey do not match, then in step 608 the processor 204 transmits a denialto the programming device and ends the programming operation in step420. If the information matches, then the processor 204 performs steps418-420 to accept and confirm the modified parameters.

[0049] This system embodiment provides that only the programming devicewhich has most recently interacted successfully with the implantabledevice is allowed to program the implantable device. Referring back toFIG. 5, in step 510 this embodiment of programming device “A” wouldreceive a denial from the implantable device when a programmingoperation is attempted. Programming device “A” would preferably informthe user of the denial and allow the user to initiate an inquiryoperation to discover any alterations which may have been made to theconfiguration parameters.

[0050] Another system embodiment is illustrated in FIG. 7. The inquiryoperation of this embodiment matches that of the previous embodiment forboth the programming device and the implantable device. After step 417of the programming operation, the implantable device's processor 204sends the programmer identification information to the programmer devicein step 705. Then in step 418, the processor 204 receives anytransmitted parameters and proceeds through steps 419, 420 as outlinedpreviously.

[0051] After step 407 of the programming operation the programmingdevice's processor 302 receives in step 701 the identificationinformation of the last programmer to interact with the implantabledevice. In step 703 the processor 302 verifies that the identificationinformation matches the programming device's model and serial number. Ifthey do not match, the processor 302 terminates the programmingoperation in step 410 and preferably notifies the user of the error.Otherwise, the processor proceeds through steps 408-410 of theprogramming operation to provide the modified parameters to theimplantable device. This embodiment advantageously places fewer demandson the implantable device, thereby minimizing implementation cost.

[0052] Another programming device embodiment is shown in FIG. 8. In thisembodiment, after successfully receiving the configuration parameters instep 405, the programming device's processor 302 starts a timer in step801. Subsequently, before initiating a transmission of alteredparameters, the processor 302 checks for expiration of the timer in step803. If too much time has elapsed, the processor 302 aborts theprogramming operation and preferably notifies the operator. Otherwise,the processor 302 continues with the programming operation in steps406-410. An implantable device embodiment which operates similarly isshown in FIG. 9. After successfully completing transmission of requestedparameters, the implantable device's processor 204 starts a timer instep 902. After a programming operation is initiated, the processor 204checks for expiration of the timer in step 904. If too much time haselapsed, the processor 204 transmits a denial in step 906, and theprogramming device preferably notifies the operator of the failure ofthe programming operation. Otherwise, the processor 204 continues theprogramming operation in steps 418-420. In a variation on theembodiments of FIGS. 8 and 9, the timers may be restarted aftersuccessful completion of the programming operation. The timers in FIGS.8 and 9 preferably run for a time period greater than 5 minutes and lessthan 60 minutes. A time period of between 10 and 20minutes iscontemplated.

[0053] Two more system embodiments are shown in FIGS. 10 and 11. Theseembodiments are closely related to those of FIGS. 6 and 7, respectively.However, rather than using the programming device's identificationnumber to identify the programming devices, these embodiments use thetime and date of last access to identify the programming devices.

[0054] Referring now to FIG. 10, after the programming device'sprocessor 302 successfully receives all the requested parameters in step405, in step 1001 the processor 302 stores and sends a current time anddate to the implantable device for the implantable device to keep onrecord. Subsequently, when the processor 302 is instructed to sendaltered parameters to the implantable device, the processor 302 performssteps 406, 407 and then in step 1002 transmits the stored time and dateto the implantable device before proceeding with the remaining steps408-410.

[0055] The implantable device's processor 204 performs steps 411-415 ofthe inquiry operation and in step 1003 receives and stores the date andtime transmitted by the programming device. In the subsequentprogramming operation the processor 204 performs steps 416, 417 beforereceiving the transmitted time and date from the programming device instep 1004. Then in step 1006 the processor 204 compares the transmittedtime and date to the stored time and date at which the last programmingdevice successfully inquired or programmed the implantable device. Ifthe numbers do not match, the processor 204 transmits a denial to theprogramming device in step 1008. Otherwise the processor 204 proceeds toreceive the new parameters in step 418. Upon successful reception of allthe transmitted parameters, the processor 204 sends a confirm signal instep 419 and stores the new parameters.

[0056] Referring now to FIG. 11, the inquiry operations of both theprogramming device and implantable device are the same as those of FIG.10. In step 1105, the implantable device's processor 204 sends thestored date and time after establishing the implantable device'sidentity in steps 416-417, and before performing the remainingprogramming steps 418-420. After steps 406-407 of the programmingoperation, the programming device's processor 302 receives the date andtime of last successful inquiry operation from the implantable device instep 1101. In step 1103, the processor 302 compares the received dateand time to its own stored date and time of last successful operation todetermine if any other programming device has successfully interactedwith the implantable device since the current programming device's lastinquiry operation. If the access date and times are the same, theprocessor 302 proceeds with steps 408-410 of the programming operation.Otherwise, the processor 302 terminates the program operation in step410 and preferably notifies the user of the error.

[0057] A preferred system embodiment is shown in FIG. 12. In thisembodiment, a time and date is associated with the last successfulprogramming of the implantable device 106. After the programmingdevice's processor 302 performs steps 401-405 of the inquiry operation,in step 1201 it receives and stores the time and date of the lastprogramming operation on the implantable device. In any subsequentprogramming operation, the processor 302 establishes the identity of theimplantable device in steps 406-407 and sends the stored time and datein step 1202 before sending any parameters in step 408. Aftertransmitting the parameters, the processor 302 sends the current dateand time to the implantable device. The processor 302 then completes theprogramming operation steps 409-410.

[0058] After the implantable device's processor 204 performs inquiryoperation steps 411415, it sends the time and date of the lastprogramming operation in step 1204. In the subsequent programmingoperation, the processor 204 establishes the implant's identity to theprogramming device in steps 416-417. In step 1205, the processor 204receives the programming device's record of the last programming date.and time, and compares it with the implantable device's record of thelast programming date and time in step 1206. If they do not match, thenthe implantable device has been reprogrammed since the last inquiryoperation by the programming device, and the processor 204 transmits adenial in step 1208 and terminates the programming operation in step420. Otherwise, the processor 204 accepts the new parameters in step418, and the current date and time in step 1210. If the programmingoperation is successful, the implantable device stores the current dateand time as the new programming date and time, and in step 419 sends aconfirmation to the programming device.

[0059] A more preferred embodiment is shown in FIG. 13. The inquiryoperation is the same as the inquiry operation of the embodiment shownin FIG. 12. The programming operation differs for the implantable devicein that after transmitting its identification information in step 417,the processor 204 transmits the stored programming date and time to theprogramming device in step 1305. The processor 204 then accepts anytransmitted modified parameters in step 418 and if the transmission issuccessful, accepts and stores the current date and time in step 1210before sending a confirmation in step 419.

[0060] The programming operation for the programming device begins withthe processor 302 requesting and receiving the implantable device'sidentification information in steps 406407. In step 1301 the processorreceives the transmitted date and time from the implantable device andin step 1303 compares the transmitted date and time to the storedprogramming date and time. If they match, then none of the configurationparameters has been re-programmed since the programming device's lastinquiry operation. Consequently, the processor 302 proceeds to send thenew parameters in step 408 and the current date and time in step 1203.Otherwise, the programming device ends the program operation in step 410and preferably notifies the operator of the error.

[0061] The embodiments of FIGS. 12 and 13 are preferred relative to thepreviously described embodiments since in these embodiments, multipleprogramming devices can simultaneously be qualified to provide a new setof parameters to the implantable device. Any programming device with acurrent version of the configuration parameters (as indicated by theassociated programming date and time) can successfully program theimplantable device. Conversely, in the other previously describedembodiments, only a single programming device at a time (the one whichhas most recently interacted with the implantable device) cansuccessfully program the implantable device.

[0062] Referring now to FIG. 14, yet another embodiment is shown. Inthis embodiment, prior to each programming operation, programming device110 inquires the configuration parameters in order to verify theaccuracy of programming device 110's copy of those parameters. Theinquiry operations for the implantable device and the programming deviceis the same as that of FIG. 4. For the programming operation, theimplantable device's processor 204 performs steps 416417 to establishits identity to the programming device. Then in step 1406 the processor204 receives a parameter request similar to that of step 414, and instep 1407 responds to the parameter request by sending the requestedparameters. Then in step 418 the processor 204 may receive modifiedparameters from the programming device, and in step 419 the processor204 acknowledges a successful receipt of the parameters and updates thecurrent parameters with the new parameter values.

[0063] The programming device's processor 302 performs steps 406407 toestablish the implantable device's identity, then in step 1401, theprocessor 302 transmits a request for the configuration parameterssimilar to that of step 404. The processor 302 receives the transmittedparameters in step 1403 and in step 1405 compares them with theparameters from the previous inquiry. If there is no change (or only aslight change which may be attributed to adaptation or progression of aprogrammed algorithm), then the implantable device has not beenreprogrammed since the inquiry. The processor 302 consequently transmitsthe new configuration parameters in step 408. Otherwise, the programmingdevice terminates the programming operation in step 410 and preferablynotifies the user of the failure.

[0064] Numerous variations and modifications will become apparent tothose skilled in the art once the above disclosure is fully appreciated.It is intended that the following claims be interpreted to embrace allsuch variations and modifications.

What is claimed is:
 1. A method for programming an implantable device,wherein the method comprises: verifying that a programming device isaware of an implantable device's current parameters; and communicatingupdated parameters from the programming device to the implantabledevice.
 2. The method of claim 1, wherein the verifying includes: theprogramming device transmitting a programming device identificationnumber to the implantable device; and the implantable device comparingthe programming device identification number to a stored identificationnumber which identifies a programming device that has made a most-recentinquiry of the implantable device.
 3. The method of claim 2, furthercomprising: sending a status message from the implantable device to theprogramming device, wherein the status message is a confirmation if theverification is successful and the updated parameters are successfullyreceived, and wherein the status message is a denial if the verificationis unsuccessful.
 4. The method of claim 1, wherein the verifyingincludes: the implantable device transmitting a stored identificationnumber to the programming device, wherein the stored identificationnumber identifies a programming device that has made a most recentinquiry of the implantable device; and the programming device comparingthe stored identification number to the programming device's ownprogramming device identification number.
 5. The method of claim 4,further comprising: aborting the communication of updated parametersfrom the programming device to the implantable device if theverification is unsuccessful.
 6. The method of claim 1, wherein theverifying includes: the programming device determining if apredetermined time interval has elapsed since the programming device'smost recent inquiry.
 7. The method of claim 6, further comprising:aborting the communication of updated parameters from the programmingdevice to the implantable device if the predetermined time interval haselapsed.
 8. The method of claim 6, wherein the predetermined timeinterval is within an inclusive range between 5 minutes and 60 minutes.9. The method of claim 6, wherein the predetermined time interval iswithin an inclusive range between 10 minutes and 20 minutes.
 10. Themethod of claim 1, wherein the verifying includes: the implantabledevice determining if a predetermined time interval has elapsed since amost recent inquiry of the implantable device.
 11. The method of claim10, further comprising: sending a status message from the implantabledevice to the programming device, wherein the status message is aconfirmation if the predetermined time interval has not elapsed and theupdated parameters are successfully received, and wherein the statusmessage is a denial if the predetermined time interval has elapsed. 12.The method of claim 10, wherein the predetermined time interval iswithin an inclusive range between 5 minutes and 60 minutes.
 13. Themethod of claim 10, wherein the predetermined time interval is within aninclusive range between 10 minutes and 20 minutes.
 14. The method ofclaim 1, wherein the verifying includes: the programming devicetransmitting an inquiry time to the implantable device; and theimplantable device comparing the inquiry time to a stored time whichindicates a time at which a most-recent inquiry of the implantabledevice was made.
 15. The method of claim 14, further comprising: sendinga status message from the implantable device to the programming device,wherein the status message is a confirmation if the verification issuccessful and the updated parameters are successfully received, andwherein the status message is a denial if the verification isunsuccessful.
 16. The method of claim 1, wherein the verifying includes:the implantable device transmitting a stored time to the programmingdevice, wherein the stored time indicates a time at which a most-recentinquiry of the implantable device was made; and the programming devicecomparing the stored time to the programming device's last inquiry time.17. The method of claim 16, further comprising: aborting thecommunication of updated parameters from the programming device to theimplantable device if the verification is unsuccessful.
 18. The methodof claim 1, wherein the verifying includes: the programming devicetransmitting a stored time to the implantable device, wherein the storedtime indicates a time at which a most-recent programming of theimplantable device was performed; and the implantable device comparingthe stored time to the implantable device's most-recent programmingtime.
 19. The method of claim 18, further comprising: communicating acurrent time along with the updated parameters from the programmingdevice to the implantable device; and storing the current time as themost-recent programming time if the verification is successful and theupdated parameters are successfully received.
 20. The method of claim18, further comprising: sending a status message from the implantabledevice to the programming device, wherein the status message is aconfirmation if the verification is successful and the updatedparameters are successfully received, and wherein the status message isa denial if the verification is unsuccessful.
 21. The method of claim 1,wherein the verifying includes: the implantable device transmitting amost-recent programming time to the programming device; and theprogramming device comparing the most-recent programming time to astored time which indicates a time at which a most-recent programming ofthe implantable device was performed.
 22. The method of claim 21,wherein the stored time is provided to the programming device from theimplantable device during an inquiry operation.
 23. The method of claim21, further comprising: communicating a current time along with theupdated parameters from the programming device to the implantabledevice; and the implantable device storing the current time as themost-recent programming time if the verification is successful and theupdated parameters are successfully received.
 24. The method of claim21, further comprising: aborting the communication of parameters fromthe programming device to the implantable device if the verification isunsuccessful.
 25. The method of claim 1, wherein the verifying includes:the implantable device transmitting current parameters to theprogramming device; and the programming device comparing the currentparameters to stored parameters from the programming device's lastinquiry of the implantable device.
 26. The method of claim 25, furthercomprising: aborting the communication of parameters from theprogramming device to the implantable device if the verification isunsuccessful.
 27. A multiprogrammer system for monitoring and optimizingimplantable device performance, wherein the system comprises: animplantable device that includes: a memory configured to storeconfiguration parameters; a telemetry module configured to transmit andreceive external communications; and a microprocessor coupled to thememory to read and write configuration parameters, and further coupledto the telemetry module to send and receive configuration parameters,wherein the microprocessor is configured to perform an algorithm in amanner governed by the configuration parameters; and at least twoprogramming devices each configurable to communicate with the telemetrymodule to receive configuration parameters from- the implantable deviceand to send updated configuration parameters to the implantable device,wherein each one of the programming devices is configured to verify thatconfiguration parameters retrieved by said one of the programmingdevices are current before said one of the programming devices sendsupdated configuration parameters to the implantable device.
 28. Themultiprogrammer system of claim 27, wherein said one of the programmingdevices verifies that the retrieved configuration parameters are currentby retrieving a stored programming device identification number from theimplantable device and comparing the stored programming deviceidentification number to an identification number of said one of theprogramming devices, whereby said one of the programming devicesdetermines whether said one of the programming devices has made amost-recent inquiry of the implantable device.
 29. The multiprogrammersystem of claim 27, wherein said one of the programming devices verifiesthat the retrieved configuration parameters are current by determiningif a predetermined time interval has elapsed since a most recent inquiryby said one of the programming devices.
 30. The multiprogrammer systemof claim 27, wherein said one of the programming devices verifies thatthe retrieved configuration parameters are current by retrieving astored time from the implantable device and comparing the stored time toa last inquiry time of said one of the programming devices, whereby saidone of the programming devices determines whether said one of theprogramming devices has made a most-recent inquiry of the implantabledevice.
 31. The multiprogrammer system of claim 27, wherein said one ofthe programming devices verifies that the retrieved configurationparameters are current by receiving a most-recent programming time fromthe implantable device and comparing the most-recent programming time toa stored programming time provided by the implantable device during alast inquiry by said one of the programming devices.
 32. Themultiprogrammer system of claim 27, wherein said one of the programmingdevices verifies that the retrieved configuration parameters are currentby retrieving the current configuration parameters from the implantabledevice and comparing the current configuration parameters to thepreviously retrieved configuration parameters.
 33. A programming devicefor an implantable device, wherein the programming device comprises: auser interface; a memory configured to store configuration parameters; acommunications circuit configurable to communicate with an implantabledevice; and a microprocessor coupled to the memory to read and writeconfiguration parameters, coupled to the user interface to display theconfiguration parameters, and further coupled to the communicationscircuit to retrieve configuration parameters from the implantable deviceand to send configuration parameters to the implantable device, whereinthe microprocessor is configurable to retrieve, write, read, alter, andsend the configuration parameters in response to input from the userinterface, wherein the microprocessor is configured to verify that theretrieved configuration parameters are current before sending alteredconfiguration parameters to the implantable device.
 34. The programmingdevice of claim 33, wherein the microprocessor verifies that theretrieved configuration parameters are current by retrieving a storedprogramming device identification number from the implantable device andcomparing the stored programming device identification number to anidentification number of the implantable device programming device,whereby the microprocessor determines whether the implantable deviceprogramming device has made a most-recent inquiry of the implantabledevice.
 35. The programming device of claim 33, wherein themicroprocessor verifies that the retrieved configuration parameters arecurrent by determining if a predetermined time interval has elapsedsince a most recent inquiry of the implantable device by themicroprocessor.
 36. The programming device of claim 33, wherein themicroprocessor verifies that the retrieved configuration parameters arecurrent by retrieving a stored time from the implantable device andcomparing the stored time to a last inquiry time of the programmingdevice, whereby the microprocessor determines whether the programmingdevice has made a most-recent inquiry of the implantable device.
 37. Theprogramming device of claim 33, wherein the microprocessor verifies thatthe retrieved configuration parameters are current by receiving amost-recent programming time from the implantable device and comparingthe most-recent programming time to a stored programming time providedby the implantable device during a last inquiry by the microprocessor.38. The programming device of claim 33, wherein the microprocessorverifies that the retrieved configuration parameters are current byretrieving the current configuration parameters from the implantabledevice and comparing the current configuration parameters to thepreviously retrieved configuration parameters.
 39. Amultiprogrammer-aware implantable device which comprises: a memoryconfigured to store configuration parameters; a telemetry moduleconfigured to transmit and receive external communications; and amicroprocessor coupled to the memory to read and write configurationparameters, and further coupled to the telemetry module to sendconfiguration parameters to a programming device and to receiveconfiguration parameters from the programming device, wherein themicroprocessor is configured to perform an algorithm in a mannergoverned by the configuration parameters, and wherein the microprocessoris configured to verify that the programming device has received acurrent version of the configuration parameters before accepting alteredconfiguration parameters.
 40. The implantable device of claim 39,wherein the microprocessor verifies that the programming device hasreceived a current version of the configuration parameters by receivinga programmer identification number from the programming device andcompares the programmer identification number to a stored identificationnumber which identifies a programming device that has made a most-recentinquiry of the implantable device.
 41. The implantable device of claim39, wherein the microprocessor verifies that the programming device hasreceived a current version of the configuration parameters bydetermining if a predetermined time interval has elapsed since a mostrecent inquiry of the implantable device.
 42. The implantable device ofclaim 39, wherein the microprocessor verifies that the programmingdevice has received a current version of the configuration parameters byreceiving an inquiry time from the programming device and comparing theinquiry time to a stored time which indicates a time at which amost-recent inquiry of the implantable device was made.
 43. Theimplantable device of claim 39, wherein the microprocessor verifies thatthe programming device has received a current version of theconfiguration parameters by receiving a programming time from theprogramming device and comparing the programming time to a stored timewhich indicates a time at which a most-recent programming of theimplantable device was performed.
 44. A method, comprising: programmingparameters in a medical implant; determining if the parameters have beenaltered since the programming parameters; modifying the parameters ifthe parameters have not been altered; and halting modifying theparameters if the parameters have been altered.
 45. The method of claim44, wherein programming parameters includes programming the parameterswith a programmer, and wherein halting modifying the parameters includesnotifying an operator that the programmer was not a last device tointeract with the medical implant.
 46. The method of claim 44, whereinprogramming parameters includes programming the parameters with a firstprogrammer and subsequently altering the parameters with a secondprogrammer.
 47. The method of claim 46, wherein modifying the parametersincludes modifying the parameters with the second programmer.
 48. Themethod of claim 46, wherein halting modifying the parameters includeshalting modifying the parameters when modification is attempted usingthe first programmer.
 49. A method, comprising: storing a program in animplantable device; storing configuration parameters in an implantabledevice, the stored configuration parameters being capable of controllingoperation of the program; electronically transferring verification databetween the implantable device and a programming device;and verifyingthe configuration parameters are current configuration parameters from acomparison of the transferred verification data with the stored data.50. The method of claim 49, including communicating updated parametersfrom the programming device to the implantable device when theconfiguration parameters are verified as current configurationparameters.
 51. The method of claim 50, wherein electronicallytransferring verification data includes determining a present inquirytime and transferring a stored last access time from the implant deviceto the programming device; and wherein verifying the configurationparameters includes comparing the present inquiry time to the lastaccess time.
 52. The method of claim 51, wherein storing configurationparameters includes: communicating a current time along with theconfiguration parameters from the programming device to the implantabledevice; and storing the current time as the last access time.
 53. Themethod of claim 49, wherein verifying includes sending a confirmationstatus message if the verification is successful and sending a denialstatus message if the verification is unsuccessful.
 54. The method ofclaim 49, wherein verifying includes aborting communication of updatedparameters from the programming device to the implantable device if theverification is unsuccessful.
 55. The method of claim 54, whereinelectronically transferring verification data includes determining apresent inquiry time and transferring a stored last access time from theimplant device to the programming device; and wherein verifying theconfiguration parameters includes comparing the present inquiry time tothe last access time.
 56. The method of claim 49, wherein storingconfiguration parameters includes: communicating a current time alongwith the configuration parameters from the programming device to theimplantable device; and storing the current time as a most-recentprogramming time.
 57. The method of claim 49, wherein storingconfiguration parameters includes sending a status message from theimplantable device to the programming device, wherein the status messageis a confirmation when the verification is successful and the updatedparameters are successfully received, and wherein the status message isa denial when the verification is unsuccessful.
 58. The method of claim49, wherein verifying configuration parameters includes verifyingoperational parameters that control therapy provided by an implantablepacemaker are current.
 59. The method of claim 49, wherein verifyingconfiguration parameters includes verifying configuration parametersthat control the therapy provided by an implantablecardioverter/defibrillator are current.
 60. The method of claim 49,wherein storing the program includes storing a parameterized program inread only memory, and controlling operation of the parameterized programby the configuration parameters.
 61. The method of claim 49, wherein theverification data includes a most recent programming time for theimplantable device and the stored data includes a stored time whereinthe stored time indicates a time at which a most-recent programming ofthe implantable device was performed, and wherein verifying includes:the implantable device transmitting the stored time to the programmingdevice; and the programming device comparing the stored time to themost-recent programming time of the implantable device.
 62. The methodof claim 61, including providing the stored time to the programmingdevice from the implantable device during an inquiry operation.
 63. Themethod of claim 61, further comprising: communicating a current timealong with the updated parameters from the programming device to theimplantable device; and the implantable device storing the current timeas the most-recent programming time if the verification is successfuland the updated parameters are successfully received.
 64. The method ofclaim 61, further comprising: aborting the communication of parametersfrom the programming device to the implantable device when theverification is unsuccessful.
 65. A programming device for animplantable device, wherein the implantable device has configurationparameters that are used by a program to control a therapy provided to apatient, wherein the programming device comprises: a user interface; amemory configured to store configuration parameters; a communicationscircuit configurable to communicate with the implantable device; and amicroprocessor coupled to the memory and the user interface, and furthercoupled to the communications circuit adapted to retrieve configurationparameters from the implantable device and send configuration parametersto the implantable device; wherein the communication circuit isconfigured to electronically transfer verification data between theimplantable device and the programming device, and the microprocessorcompares the transferred verification data with stored data, andverifies configuration parameters of the implantable device are currentconfiguration parameters from the comparison of the transferredverification data with the stored data.
 66. The programming device ofclaim 65, wherein the microprocessor is configurable to retrieve, write,read, alter, and send the configuration parameters in response to inputfrom the user interface and to communicate updated configurationparameters from the programming device to the implantable device whenthe configuration parameters are verified as current configurationparameters.
 67. The programming device of claim 66, wherein themicroprocessor verifies that the retrieved configuration parameters arecurrent by retrieving a stored time from the implantable device andcomparing the stored time to a last inquiry time of the programmingdevice, whereby the microprocessor determines whether the programmingdevice has made a most-recent inquiry of the implantable device.
 68. Theprogramming device of claim 65, wherein the microprocessor verifies thatthe retrieved configuration parameters are current by receiving amost-recent programming time from the implantable device and comparingthe most-recent programming-time to a stored programming time providedby the implantable device during a last inquiry by the microprocessor.69. The programming device of claim 65, wherein the microprocessorverifies that he retrieved configuration parameters are current byretrieving the current configuration parameters from the implantabledevice and comparing the current configuration parameters to thepreviously retrieved configuration parameters.
 70. A method, comprising:storing a program and programmable configuration parameters in animplantable device, the configuration parameters controlling operationof the program stored in the implantable device; transferringverification data between the implantable device and a programmingdevice; and verifying that configuration parameters presently stored inthe implantable device are the same configuration parameters that areknown to the programming device by comparing the transferredverification data with the stored data.
 71. An implantable device,comprising: a memory configured to store configuration parameters; atelemetry module configured to transmit and receive externalcommunications; and a microprocessor coupled to the memory to read andwrite configuration parameters, and further coupled to the telemetrymodule to send configuration parameters to a programming device and toreceive configuration parameters from the programming device; andwherein the microprocessor is configured to verify that the programmingdevice has received a current version of the configuration parametersbefore accepting altered configuration parameters.
 72. The implantabledevice of claim 71, wherein the microprocessor verifies that theprogramming device has received a current version of the configurationparameters by receiving a programmer identification number from theprogramming device and compares the programmer identification number toa stored identification number which identifies a programming devicethat has made a most-recent inquiry of the implantable device.
 73. Theimplantable device of claim 72, wherein the microprocessor aborts thecommunication of updated parameters from the programming device to theimplantable device when the stored identification number and theprogramer identification number do not match.
 74. The implantable deviceof claim 73, wherein the microprocessor sends a request to theprogramming device to transmit configuration parameters, themicroprocessor receives the configuration parameters and starts a timerafter the configuration parameters are received, wherein themicroprocessor determines when the timer has expired and transmits adenial to the implantable device when the timer has expired andtransmits the updated parameters to the implantable device when thetimer has not expired.
 75. The implantable device of claim 71, whereinthe microprocessor verifies that the programming device has received acurrent version of the configuration parameters by receiving an inquirytime from the programming device and comparing the inquiry time to astored time which indicates a time at which a most-recent inquiry of theimplantable device was made.
 76. The implantable device of claim 71,wherein the microprocessor verifies that the programming device hasreceived a current version of the configuration parameters by receivinga programming time from the programming device and comparing theprogramming time to a stored time which indicates a time at which amost-recent programming of the implantable device was performed.